/*
 * @Author: error: error: git config user.name & please set dead value or install git && error: git config user.email & please set dead value or install git & please set dead value or install git
 * @Date: 2023-12-22 14:09:31
 * @LastEditors: error: error: git config user.name & please set dead value or install git && error: git config user.email & please set dead value or install git & please set dead value or install git
 * @LastEditTime: 2023-12-22 14:09:59
 * @FilePath: \every-little-progress\day 396\test.cc
 * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
 */


// 1897. 重新分配字符使所有字符串都相等
// https://leetcode.cn/problems/redistribute-characters-to-make-all-strings-equal/description/
// 给你一个字符串数组 words（下标 从 0 开始 计数）。

// 在一步操作中，需先选出两个 不同 下标 i 和 j，其中 words[i] 是一个非空字符串，接着将 words[i] 中的 任一 字符移动到 words[j] 中的 任一 位置上。

// 如果执行任意步操作可以使 words 中的每个字符串都相等，返回 true ；否则，返回 false 。

 

// 示例 1：

// 输入：words = ["abc","aabc","bc"]
// 输出：true
// 解释：将 words[1] 中的第一个 'a' 移动到 words[2] 的最前面。
// 使 words[1] = "abc" 且 words[2] = "abc" 。
// 所有字符串都等于 "abc" ，所以返回 true 。
// 示例 2：

// 输入：words = ["ab","a"]
// 输出：false
// 解释：执行操作无法使所有字符串都相等。
 

// 提示：

// 1 <= words.length <= 100
// 1 <= words[i].length <= 100
// words[i] 由小写英文字母组成


class Solution {
public:
    bool makeEqual(vector<string>& words) {
        vector<int> hash(26, 0);
        for(const auto& e : words) for(const auto& r : e) ++hash[r - 'a'];
        for(const auto& e : hash) if(e % words.size()) return false;
        return true;
    }
};

// class Solution {
// public:
//     bool makeEqual(vector<string>& words) {
//         unordered_map<char, int> hash;
//         for(const auto& e : words) for(const auto& r : e) ++hash[r];
//         for(const auto& [x, y] : hash) if(y % words.size()) return false;
//         return true;
//     }
// };